<template>
  <div class="my-tag">
    <input
      v-if="isEdit"
      class="input"
      type="text"
      placeholder="输入标签"
      v-focus
      @blur="isEdit = false"
      :value="input"
      @keyup.enter="fn"
    />
    <div v-else class="text" @dblclick="isEdit = true">{{tag}}</div>
  </div>
</template>

<script>
// 页面上不要用v-model因为， v-model="tag" 可以能将父组件传递过来的值也修改了
// 破坏vue的单向数据流。 这里吧v-model打散了来写
export default {
  props: {
    tag: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      // isShow  isOpen
      // 当前输入框是否是编辑状态
      isEdit: false,
      // 输入框的值
      input: this.tag  // 就是将父组件传递过得值，直接给input的初始值，放到input上面显示
    }
  },
  methods: {
    fn(e){
      console.log(e.target.value);
      this.$emit('update_tag', e.target.value)
      // 修改完数据以后，关闭input输入框，就是退出修改状态
      this.isEdit = false;
    }
  }
}
</script>

<style lang="less" scoped>
.my-tag {
  cursor: pointer;
  .input {
    appearance: none;
    outline: none;
    border: 1px solid #ccc;
    width: 100px;
    height: 40px;
    box-sizing: border-box;
    padding: 10px;
    color: #666;
    &::placeholder {
      color: #666;
    }
  }
}
</style>